package aptech.lab.servlet.filter;

import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

/**
 * Servlet Filter implementation class SessionFilter
 */
@WebFilter("/SessionFilter")
public class SessionFilter implements Filter {
	private FilterConfig config;
	public SessionFilter() {
	  }

	  public void init(FilterConfig filterConfig) throws ServletException {

	    System.out.println("Instance created of " + getClass().getName());
	    this.config = filterConfig;
	  }

	  public void doFilter(ServletRequest request, ServletResponse response,
	      FilterChain chain) throws java.io.IOException, ServletException {

	    HttpSession session = ((HttpServletRequest) request).getSession();
	    ServletContext context = config.getServletContext();
	    /*
	     * use the ServletContext.log method to log filter messages
	     */
	    context.log("doFilter called in: " + config.getFilterName() + " on "
	        + (new java.util.Date()));

	    // log the session ID
	    context.log("session ID: " + session.getId());

	    // Find out whether the logged-in session attribute is set
	    String logged = (String) session.getAttribute("logged-in");
	    if (logged == null)
	      session.setAttribute("logged-in", "no");

	    //log a message about the log-in status
	    context.log("log-in status: "
	        + (String) session.getAttribute("logged-in"));
	    context.log("");
	    chain.doFilter(request, response);
	  }

	  public void destroy() {
	    /*
	     * called before the Filter instance is removed from service by the web
	     * container
	     */
	  }

}
